home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagd_f.zip / DESQVIEW.SWG / 0005_DESQVIEW Support Unit.pas < prev    next >
Pascal/Delphi Source File  |  1994-02-09  |  2KB  |  87 lines

  1. (* ------------------------------------------------------------ *)
  2.  
  3. { This unit adds support for the DESQview" multi-tasking enviroment
  4.   By Joel Bergen  last revised: 9/17/90  }
  5.  
  6. {$A+,B-,D+,E+,F-,I+,L+,N-,O+,R+,S+,V+}
  7. {$M 1024,0,0}
  8.  
  9. UNIT DESQview;
  10.  
  11. INTERFACE
  12.  
  13. USES DOS;
  14.  
  15. VAR
  16.   Dv_Loaded  : BOOLEAN; {True if running under DESQview                  }
  17.   Dv_Version : WORD;    {DESQview" version number                        }
  18.                         {Returns "0" if DESQview" is not loaded.         }
  19.                         {Use:                                            }
  20.                         {WRITELN(Hi(Dv_Version)+Lo(Dv_Version)/100:4:2); }
  21.                         {to display the version of "Desqview" correctly. }
  22.  
  23.  
  24. FUNCTION  Dv_There : BOOLEAN;     {True if Desqview loaded. Sets Dv_Version}
  25. PROCEDURE Dv_Pause;               {Give up the rest of our timeslice}
  26. PROCEDURE Dv_Begin_Critical;      {Turn switching off for time critical ops}
  27. PROCEDURE Dv_End_Critical;        {Turn switching back on}
  28. FUNCTION  Dv_Video_Buffer : WORD; {returns address of video buffer}
  29.  
  30. IMPLEMENTATION
  31.  
  32. VAR
  33.   Reg : REGISTERS;
  34.  
  35. FUNCTION Dv_There;
  36. BEGIN
  37.   Reg.CX:=$4445;
  38.   Reg.DX:=$5351;
  39.   Reg.AX:=$2B01;
  40.   INTR($21,Reg);
  41.   Dv_Loaded:=(Reg.AL<>$0FF);
  42.   IF Dv_Loaded THEN Dv_Version:=Reg.BX ELSE Dv_Version:=0;
  43.   Dv_There:=Dv_Loaded;
  44. END;
  45.  
  46. PROCEDURE Dv_Pause;
  47. BEGIN
  48.   IF DV_Loaded THEN BEGIN
  49.     Reg.AX:=$1000;
  50.     INTR($15,Reg);
  51.   END;
  52. END;
  53.  
  54. PROCEDURE Dv_Begin_Critical;
  55. BEGIN
  56.   IF DV_Loaded THEN BEGIN
  57.     Reg.AX:=$101B;
  58.     INTR($15,Reg);
  59.   END;
  60. END;
  61.  
  62. PROCEDURE Dv_End_Critical;
  63. BEGIN
  64.   IF DV_Loaded THEN BEGIN
  65.     Reg.AX:=$101C;
  66.     INTR($15,Reg);
  67.   END;
  68. END;
  69.  
  70. FUNCTION DV_Video_Buffer;
  71. BEGIN
  72.   Reg.AH:=$0F;
  73.   INTR($10,Reg);
  74.   IF Reg.AL=7 THEN Reg.ES:=$B000 ELSE Reg.ES:=$B800;
  75.   IF DV_Loaded THEN BEGIN
  76.     Reg.DI:=0;
  77.     Reg.AX:=$FE00;
  78.     INTR($10,Reg);
  79.   END;
  80.   DV_Video_Buffer:=Reg.ES;
  81. END;
  82.  
  83. BEGIN { Checks to see if desqview is loaded at startup. }
  84.   Dv_Loaded:=Dv_There;
  85. END.
  86.  
  87.